  //懒汉模式会出现线程安全问题  脏读问题，改进加锁，并且还得加对位置
  //非常重要
class SingleLazy{
    private static volatile SingleLazy instance=null;

    public static SingleLazy getSingleLazy() {
        //第一个if是判断是否要加锁
        if(instance==null) {       //就第一次加锁即可，以后不需要加锁了，因为以后第一次后，instance就不为空，直接返回即可，要不开销就大了
            synchronized (SingleLazy.class) {
                if (instance == null) {  //第二个if是判断用不用new对象
                    return new SingleLazy();
                }
            }
        }
        return instance;

    }


   private SingleLazy() {
    }
}

public class ThreadDemo14 {
    public static void main(String[] args) {

   SingleLazy singleLazy1=SingleLazy.getSingleLazy();
   SingleLazy singleLazy2=SingleLazy.getSingleLazy();
        System.out.println(singleLazy2==singleLazy1);
    }
}
